# prompt_value_demo.py
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate


def demonstrate_template_value():
    """演示提示词模板的价值"""

    print("🎯 提示词模板价值演示")
    print("=" * 50)

    llm = ChatOpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        model="qwen-turbo"
    )

    # 1. 一致性：相同的分析标准
    hr_analysis_template = ChatPromptTemplate.from_template("""
    你是一名资深HR，请按照统一标准分析以下简历：

    姓名：{name}
    技能：{skills}
    经验：{experience}

    评估维度：
    1. 技能匹配度（1-10分）
    2. 经验相关性（1-10分）
    3. 发展潜力（1-10分）
    4. 综合评价

    请严格按照以上格式输出。
    """)

    # 测试数据
    candidates = [
        {"name": "张三", "skills": "Java, Spring Boot, MySQL", "experience": "3年后端开发"},
        {"name": "李四", "skills": "Python, Django, PostgreSQL", "experience": "2年全栈开发"},
        {"name": "王五", "skills": "JavaScript, React, Node.js", "experience": "4年前端开发"}
    ]

    print("📊 统一标准分析结果：")
    for candidate in candidates:
        print(f"\n--- 分析候选人：{candidate['name']} ---")
        format_prompt =  hr_analysis_template.format(
            name = candidate["name"],
            skills = candidate["skills"],
            experience = candidate["experience"]
        )
        print("格式化之后的提示词:\n", format_prompt)
        result = llm.invoke(format_prompt)
        print(result.content)

    # 2. 可维护性：修改模板影响所有使用点
    print("\n🔧 模板修改演示：")

    # 升级版模板：增加薪资期望分析
    enhanced_template = ChatPromptTemplate.from_template("""
    你是一名资深HR，请按照升级标准分析以下简历：

    姓名：{name}
    技能：{skills}
    经验：{experience}

    评估维度：
    1. 技能匹配度（1-10分）
    2. 经验相关性（1-10分）  
    3. 发展潜力（1-10分）
    4. 薪资合理性评估（新增）
    5. 综合评价

    请严格按照以上格式输出，特别关注薪资合理性。
    """)

    print("📈 升级后的分析（所有候选人自动使用新标准）：")
    sample_candidate = candidates[0]
    result = llm.invoke(enhanced_template.format(**sample_candidate))
    print(result.content)


# 运行演示
demonstrate_template_value()
